我幫忙翻譯:Android and the Linux kernel community
在 Linux kernel 2.6.33 版本,Android 程式碼,已經被移除。很多人開始詢問我到底發生了什麼事?Android 下一步又該怎麼辦?所以,以下就是我對這整件事情的意見……
原文:http://www.kroah.com/log/linux/android-kernel-problems.html
在 Linux kernel 2.6.33 版本,Android 程式碼,已經被移除。很多人開始詢問我到底發生了什麼事?Android 下一步又該怎麼辦?所以,以下就是我對這整件事情的意見……
首先,我要說,我是很喜歡 Android 手機平台。直到上週,我還是每天,使用我買的 developer G1,它完美的運作,讓用戶我非常高興。
從技術的角度,我也對 Android 感到高興。讓人驚奇,Google 運用 Linux 內核,純粹就用傳統的 Linux 系統,創造出一個具移植性,而且可靠的手機平台。這個平台是這麼特別,你甚至可以在手機上,換上一個 Linux 作業系統的 image 檔,兩種版本都可運作正常,完全不需任何修改。
Android 同時也解決了收機製造商,多年以來的一些問題:一個免費版本的 Java,及一個統一的應用程式中介層,讓程式人員針對它開發出軟體,可以運行在所有 Android 的手機上。因為這樣,所有現有的「Linux 手機聯盟」,不是已經群體滅亡,倖存的應該也會很快就默默的消失。
這有哪裡不對?
發生什麼事,讓 Android 程式碼,被從 Linux 核心刪除?簡單說,沒有人關心 Android 程式碼了,所以就刪了吧。就像我以前所聲明的,核心程式碼,分支版本,必須努力整併進主要版本,不然就會被刪除。
但是關於這點,有更大的問題存在。
Android 內核,並非只是在 drivers/staging/android 子目錄,的幾個怪異驅動程式而已。為了能讓 Android 運作,你需要用他們所新增的 lock type,並且用他們的安全模式,才能跟 Linux 內核掛勾上。
為了要寫 Android 上使用的 驅動程式,你需要正確的整合新的 lock,有時還要跟怪異的安全模式打交道。對了,還有一個完全不同的顯示硬體 frame buffer 架構。
這意謂任何為 Android 平台寫的驅動程式,因為跟 Google 內核分支有相依性,所以就不能整併進主要內核分支,最終也不能進 kernel.org 內核分支。
就因為這樣,Google 已經造成很多的驅動程式,很多與平台相關的程式碼,不能整進主要內核分支。實質上,這已經變成了幾個特定製造商,所倚賴的內核分支。
現在 Linux 內核的的幾個分支版本,是依照幾個主要的發行版本,所制定的,目前相安無事。但是因為 Google 不想讓他們的程式碼,整併入主流的分支。Google 所寫出的驅動程式及平台相關的程式,被鎖住無法回饋給內核社群。而內核社群,已經花很多年,告訴這些 Linux 發行版本的公司,把他們的內核整併進來。然後這些發行商,他們就可以,套用新的安全性修正,套用大量且快速異動的程式碼。這些公司有聽到呼籲,你可以看到他們持續在他們所發行的版本,更新他們的內核。
但是現在他們被卡住了,那些使用 Android 相關平台或是驅動的公司,不能回饋給他們的上游。造成這些發行商,在回護及開發內核上,要花更大的功夫。
想要把 Android 內核碼整併進主分支,要如何做呢?
當 Android 的程式碼,整進一的臨時的分支,幾位核心程式的開發人員,會審核程式碼,然後指出該清理、該改變的地方,這樣程式碼才能夠被接受。有一些改變,會影響到內核跟使用者空間的界限,所以有些 Android 上的用戶空間的邏輯,也會因為內核的改變,而需跟著改變。但這可以免除了 Google 以外的員工,因為引進 Android 引起的不必要修改。
那,下一步呢?
我真的不知道。Google 似乎不再願意整併程式碼到上游。有些公司嘗試拿掉 Android 規格的介面,然後將程式碼上游。但這是需要很大的力氣,又顯得沒有必要。
衷心希望
我希望 Google 能回來,修正他們的程式,整併進主分支,然後回饋給上游。並停止他們對許多 Linux 鑲入式系統公司,所造成的障礙。
我以前曾經私底下幫忙解決這些問題,現在及以後將公開支持並幫忙解決這些問題,但我需要 Google 開發人員的幫忙,沒有他們,什麼都改不了。
好消息是,內核及使用者空間程式介面的改變,將不會影響任何 Android 應用程式的程式碼。所有這些改變,可以適用在整個系統,完全沒有問題。
我將在 CE Linux 論壇 2010 的演講上,談論 Android 的這一團亂。希望在這之前,情況會有所改善。不然 CELF 將秉持長久以來的慣例,在會議上發演講稿,大聲斥責他們已經幹出來的壞事情。
這是正常的Kernel軟體工程管理, 沒有所謂的開不開除的. Android不過只是一個知名案例罷了.
寫 開除 才顯得重要啊,本來要寫槍斃,可是想想大過年的,不吉利。
用到開除的字眼,不如用進化而令其消失會好一些…
談到Android系統,其實我並沒有對他作過太細的研究,但倒是作了些評估。
在我過去摸UNIX的經驗來看,它並不是一個出色的作業系統,充其量只是一個【假】多工的作業系統,實際上,為了它在開發之初能達到更小的體積(指核心),所以嚴格上來講,它只能說是【單工】而已,如果各位有機會測試的話,可以試試看,在你玩任何一款APP時,只要來電話,它會立即關閉你正在執行的APP,執行接電話功能…
或許有人會說我這個測試太過武斷,並不公正,也沒有依據,各位不妨再測測相同狀況在iPhone上是否會有相同的情況,答案是,狀況一樣,結果會略有不同,各位可以親試便知了。
言歸正傳,還是來談談Andriod,它即然是為手機設計的,就必定要走短小精幹的路線,所以,僅用了小小的128MB(相信初版可能更小)即啟動了它,所以,Android1.0版只用了512MB就夠了,但是好景不常啊,上市不到6個月,使用者及開發人員都同時發現它的缺失,記憶容量太小,只要下載幾個APP,它馬上就可能無法動彈,因此,2.0譜上市之初,就出現了2GB的內鍵記憶體,但是內核仍然依照其手機使用的概念去設計,沒有多大的改變..
2.0的2GB使用概念,也在短短的數個月中,被貪而無厭的使用者給耗盡,在不得已的情況下,3.0開始思考將APP使用擴充記憶卡的可能性,最後4.0版將該功能完全穩定的使用上,但是,這樣仍是不改其手機專用小而美的設計概念,其核心仍然是使用那4GB的內建記憶體,而實際而運用的,是否有到達4GB,因沒有太深入研究,就看開發商如何對大家說明了…
大概在Andriod2.0剛出來那段時間,有一位朋友拿了一套Android For PC給我測試,我把它安裝在一般的PC上,發現它只佔用2GB的硬碟,無法再擴充,找到它的終端機程式,進入它的文字介面操作,也發現,它的磁碟操指令,大部份都不能使用,只能測測在為android開發的APP,其他就大概都不能用了…
後來陸續收到朋友的幾台Android的測試機,再加上自己去買了一台台灣大哥大與華為合作的七吋平板電腦來測試,這才發現,它有很大的缺失,當時,我就下過斷言,在五年內,Android會走到一個瓶井,有可能新一代的Android會跟目前這個模式完全不一樣,因為它的過去是專為手機而設計,而新一代要走更寬廣的路,不能再死守在這小小的記憶體空間了。
說明白一點,就是Android的出生、到現在,都還停留在原始設計的概念裡,而使用者的無限想像,早已變成Android是否要丟棄袍袱的決擇了,我想這點,應該早就被Nokia所評估出來,才一直沒有要涉入這一系統的研發(當然,可能也受限於他們每每下滑的財報所影響)。
反觀一下iPhone及Windows Phone的設計概念..
Apple及Microsoft對行動裝置的設計概念就與Google大大的不同了,他們一開始是把移動裝置當電腦來看,所以,是以一般PC規格在寫他的作業系統,因此,作業系統皆屬龐然大物型的,iPhone它一開始就是8GB,除了裝載它的作業系統外,還有足夠的使用者的使用容量,因此,iPhone的使用者很少抱怨容量不足的問題。
Microsoft更是拿手機當PC在看,所以,作業系統也是龐然大物,但不可否認的是,它的Windows Phone 7.0、7.5、7.8是個不成功的產品,原因我就不多說了,各位應該很明白才對..
但是從長遠的使用概念來看,Apple的iPhone及iPad與MicroSoft的Widows Phone及Surface會較沒有系統上的約束與袍袱,因為是隨著PC概念一同成長,但將來是否會完全沒問題,我就不敢斷言了,只是眼下,是看不出有任何問題而已。不像Android一樣,只要對作業系統了解的人都能評估的出來…
Google是否要完全改變它的這一個手機專用的作業系統,得看看他們的核心智慧了,因為改變,可能走入MS的Windows Phone7.x至Windows Phone8.x的困境,全球有多少使用者會叫苦,或是變成哀鴻遍野;還有,此一改變,若要改變寫APP的規格,那有多少工程人員會因此跳槽或也是哀鴻遍野,這全都要看Google的高層們的智慧了。